package com.nuorui.module.system.service;

import com.nuorui.common.core.domain.RequestUser;
import com.nuorui.common.core.domain.ResponseDTO;
import com.nuorui.module.system.domain.form.LoginForm;
import com.nuorui.common.core.domain.LoginUser;
import com.nuorui.module.system.domain.vo.LoginResultVO;

import javax.servlet.http.HttpServletRequest;

/**
 * 类描述
 *
 * @author: Fred
 * @email 453086@qq.com
 * @create: 2025-06-06 14:44
 */
public interface LoginService {


    /**
     * 用户登录
     *
     * @param loginForm
     * @param ip
     * @param userAgent
     * @return
     */
    ResponseDTO<LoginResultVO> login(LoginForm loginForm, String ip, String userAgent);

    /**
     * 获取登录结果信息
     *
     * @param loginUser
     * @param token
     * @return
     */
    LoginResultVO getLoginResult(LoginUser loginUser, String token);

    /**
     * 退出登录
     *
     * @param requestUser
     * @return
     */
    ResponseDTO<String> logout(RequestUser requestUser);

    LoginUser getLoginUser(String loginId, HttpServletRequest request);

    /**
     * 清理用户缓存
     *
     * @param userId
     */
    void clearLoginUserCache(Long userId);


}
